package cn.iocoder.yudao.module.system.controller.admin.examscore.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 学生成绩等效分导出 VO
 * 用于导出学生基础信息、总分赋分以及2024和2025年的等效分和等效位次
 *
 * @author 芋道源码
 */
@Schema(description = "管理后台 - 学生成绩等效分导出 VO")
@Data
public class ExamScoreEquivalentExportVO {

    @Schema(description = "学号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024001")
    @ExcelProperty("学号")
    private String studentNo;

    @Schema(description = "学生姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("学生姓名")
    private String studentName;

    @Schema(description = "班级名称", example = "高三(1)班")
    @ExcelProperty("班级名称")
    private String className;

    @Schema(description = "考号", example = "202400001")
    @ExcelProperty("考号")
    private String examNo;

    @Schema(description = "省份", example = "安徽")
    @ExcelProperty("省份")
    private String province;

    @Schema(description = "考试类型", example = "物理类")
    @ExcelProperty("考试类型")
    private String examType;

    @Schema(description = "选科组合", example = "物理+化学+生物")
    @ExcelProperty("选科组合")
    private String subjectCombination;

    @Schema(description = "总分", example = "650.5")
    @ExcelProperty("总分")
    private BigDecimal totalScore;

    @Schema(description = "总分赋分", example = "655.5")
    @ExcelProperty("总分赋分")
    private BigDecimal totalScoreAssigned;

    // ========== 2025年等效分和等效位次 ==========

    @Schema(description = "2025年等效分", example = "665.5")
    @ExcelProperty("2025年等效分")
    private BigDecimal equivalentScore2025;

    @Schema(description = "2025年等效位次", example = "12345")
    @ExcelProperty("2025年等效位次")
    private Integer equivalentRank2025;

    // ========== 2024年等效分和等效位次 ==========

    @Schema(description = "2024年等效分", example = "660.0")
    @ExcelProperty("2024年等效分")
    private BigDecimal equivalentScore2024;

    @Schema(description = "2024年等效位次", example = "13456")
    @ExcelProperty("2024年等效位次")
    private Integer equivalentRank2024;

    // ========== 各科成绩 ==========

    @Schema(description = "语文成绩", example = "120.5")
    @ExcelProperty("语文成绩")
    private BigDecimal chineseScore;

    @Schema(description = "数学成绩", example = "135.0")
    @ExcelProperty("数学成绩")
    private BigDecimal mathScore;

    @Schema(description = "英语成绩", example = "128.5")
    @ExcelProperty("英语成绩")
    private BigDecimal englishScore;

    @Schema(description = "物理成绩", example = "85.0")
    @ExcelProperty("物理成绩")
    private BigDecimal physicsScore;

    @Schema(description = "化学成绩", example = "78.5")
    @ExcelProperty("化学成绩")
    private BigDecimal chemistryScore;

    @Schema(description = "生物成绩", example = "82.0")
    @ExcelProperty("生物成绩")
    private BigDecimal biologyScore;

    @Schema(description = "政治成绩", example = "88.5")
    @ExcelProperty("政治成绩")
    private BigDecimal politicsScore;

    @Schema(description = "历史成绩", example = "90.0")
    @ExcelProperty("历史成绩")
    private BigDecimal historyScore;

    @Schema(description = "地理成绩", example = "85.5")
    @ExcelProperty("地理成绩")
    private BigDecimal geographyScore;

    // ========== 排名信息 ==========

    @Schema(description = "班级排名", example = "5")
    @ExcelProperty("班级排名")
    private Integer classRank;

    @Schema(description = "年级排名", example = "25")
    @ExcelProperty("年级排名")
    private Integer gradeRank;

    @Schema(description = "校内排名", example = "35")
    @ExcelProperty("校内排名")
    private Integer schoolRank;

    @Schema(description = "组合排名", example = "15")
    @ExcelProperty("组合排名")
    private Integer combinationRank;

    // ========== 省控线和特控线数据 ==========

    @Schema(description = "2025年省控线", example = "495.0")
    @ExcelProperty("2025年省控线")
    private BigDecimal provinceControlLine2025;

    @Schema(description = "2024年省控线", example = "490.0")
    @ExcelProperty("2024年省控线")
    private BigDecimal provinceControlLine2024;

    @Schema(description = "特控线分数", example = "520.0")
    @ExcelProperty("特控线分数")
    private BigDecimal controlLineScore;

    @Schema(description = "备注", example = "")
    @ExcelProperty("备注")
    private String remark;
}

